package tagging

import (
	"gitee.com/xuender/tagging/pb"
)

// Service 服务.
type Service struct {
	ds *DBService
}

// NewService 新建服务.
func NewService(ds *DBService) *Service {
	return &Service{
		ds: ds,
	}
}

// GetNS 获取命名空间信息.
func (s *Service) GetNS(ns string) *pb.Namespace {
	// id := NSID(ns)
	// if n, has := s.ns[id]; has {
	// 	return n
	// }

	return &pb.Namespace{Name: ns}
}

// Tags 查询标签.
func (s *Service) Tags(ns, id string) []string {
	ts := s.ds.GetTags(ns, id)
	is := ts.Slice()
	ret := make([]string, len(is))

	for i, index := range is {
		if tag, err := s.ds.TagByIndex(index); err == nil {
			ret[i] = tag.Name
		}
	}

	return ret
}

// Tag 查看标签.
func (s *Service) Tag(tag string) *pb.Tag {
	if s.ds.Has(tag) {
		if t, err := s.ds.TagByName(tag); err == nil {
			return t
		}
	}

	return &pb.Tag{Name: tag}
}
